package com.egreen.order.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.egreen.common.pojo.VO.order.RecyclableTypeVO;
import com.egreen.common.pojo.entity.order.RecyclableType;
import com.egreen.order.dao.RecyclableTypeDao;
import com.egreen.order.service.IRecyclableTypeService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author cloudJiang
 * @since 2022-07-16
 */
@Service
public class RecyclableTypeServiceImpl extends ServiceImpl<RecyclableTypeDao, RecyclableType> implements IRecyclableTypeService {
    @Autowired
    IRecyclableTypeService recyclableTypeService;
    @Autowired
    RecyclableTypeDao recyclableTypeDao;

    /**
     * 通过Id查找可回收物品的类型
     * @param id
     * @return
     */
    @Override
    public List<RecyclableTypeVO> selectTypeById(int id) {
        //存放查询的条件
        QueryWrapper queryWrapper = new QueryWrapper();
        queryWrapper.select("id", "type_name");
        //进行筛选
        queryWrapper.eq("id", id);
        //根据条件查询得到数据封装到集合里
        List<RecyclableTypeVO> list = recyclableTypeDao.selectList(queryWrapper);
        return list;
    }

    /**
     * 可回收物品类型的增加
     * @param typeName
     */
    @Override
    public void addRecyclableType(String typeName) {
        //通过查询RecyclableType获取可回收物品的类型
        RecyclableType recyclableType = new RecyclableType(null,typeName);
        //遍历数据库并且将数据存入List集合中
        List<RecyclableType> recyclableTypes= this.list();
        for (int i = 0; i < recyclableTypes.size(); i++) {
            //判断在数据库中是否还有这个可回收物品的类型(有:提示有了;没有:增加)
            if (recyclableTypes.get(i).getTypeName().equals(typeName)){
                //TODO 抛出一个类型重复异常
                System.out.println("已存在");
                return;
            }
        }
        recyclableTypeService.save(recyclableType);
    }

    /**
     * 可回收物品类型的删除
     * @param typeId
     */
    @Override
    public void removeRecyclableType(Integer typeId) {
        recyclableTypeDao.deleteById(typeId);
    }
}
